10 PRINT "PROFILES WATER SURFACE PROFILES IN STEADY STATE": PRINT 20 ' WATER SURFACE PROFILE IN RECT, TRAPEZOIDAL, OR TRIANELILAR CHANNEL, 30 ' XL=LENGTH, B=BOT WIDTH, Z=SIDE SLOPE, RN=MANNING N,SO=BOT SLOPE,Q=FLOW. 40 ' YCONT=CONTROL DEPTH. IF YCONT=O IN DATA, YCONT IS SET EQUAL TO YC. 50 ' IN SUBCRITICAL FLOW, CONTROL IS DOWNSTREAM AND DISTANCES ARE MEASURED 60 ' IN THE UPSTREAM DIRECTION 70 ' IN SUPERCRITICAL FLOW, CONTROL IS U.S. AND DISTANCES ARE MEASURED D.S. 80 PRINT CHR$(14); "STEADY-STATE WATER-SURFACE PROFILES" 90 PRINT CHR$(14); " DATE="; DATE$; " TIME="; TIME$ 100 DEF FNAREA (YY) = YY * (B + Z * YY): DEF FNPER (YY) = B + 2! * YY * SQR(1! + Z ^ 2) 110 DEF FNYCRIT (YY) = 1! - Q ^ 2 * (B + 2! * Z * YY) / (G * FNAREA(YY) ^ 3) 120 DEF FNYNORM (YY) = 1! - Q ^ 2 * CON / (FNAREA(YY) ^ 3.333 / FNPER(YY) ^ 1.333) 130 DEFINT I: DEF FNDL (YY) = FNYCRIT(YY) / (FNYNORM(YY) * S0) 140 DEF FNFPM (YY) = GAM * (YY ^ 2 * (.5 * B + Z * YY / 3!) + Q ^ 2 / (G * FNAREA(YY))) 150 ISI$ = "SI": DEF FNENERGY (YY) = YY + Q ^ 2 / (2! * G * FNAREA(YY) ^ 2) 160 READ IUNIT$, XL, B, Z, RN, S0, Q, YCONT: DATA "SI",200.,2.5,.8,.012,.025,25.,.0 170 IF IUNIT$ = ISI$ THEN 190 180 GAM = 62.4: G = 32.2: CON = (RN / 1.486) ^ 2 / S0: PRINT " USC UNITS": PRINT : GOTO 200 190 GAM = 9802!: G = 9.806001: CON = RN ^ 2 / S0: PRINT "SI UNITS": PRINT 200 PRINT " CHANNEL LENGTH="; XL; " DISCHARGE="; Q; " B="; B; " Z="; Z; "RN="; RN; " S0="; S0 210 ' DETERMINATION OF CRITICAL AND NORMAL DEPTHS 220 NN = 30: DN = O!: UP = 30!: YC = 15!: FOR I = 1 TO 15: IF FNYCRIT(YC) = 0! THEN 250 230 IF FNYCRIT(YC) < 0! THEN DN = YC ELSE UP = YC 240 YC = .5 * (UP + DN): NEXT I 250 IF YCONT = O! THEN YCONT = YC 260 IF S0 <= 0! THEN 320 270 UP = 40!: DN = 0!: YN = 20!: FOR I = 1 TO 15 280 X = FNYNORM(YN): IF X < 0! THEN DN = YN: GOTO 300 290 IF X > 0! THEN UP = YN ELSE GOTO 310 300 YN = .5 * (UP + DN): NEXT I 310 PRINT : PRINT " NORMAL DEPTH="; YN; " CRITICAL DEPTH="; YC: GOTO 330 320 YM = 3! * YC: PRINT : PRINT " CRITICAL DEPTH="; YC 330 IF YN < YC THEN 410 340 ' MILD, ADVERSE, OR HORIZONTAL CHANNEL YN>YC 350 IF YCONT < YC THEN 390 360 ' SUBCRITICAL FLOW, YCONT>=YC 370 SIGN = -1!: DY = (YCONT - YN) * .998 / NN: PRINT : PRINT "CONTROLIS DOWNSTREAM,DEPTH="; YCONT: GOTO 460 380 ' SUPERCRITICAL FLOW 390 SIGN = 1!: DY = (YC - YCONT) / NN: PRINT : PRINT "CONTROL IS UPSTREAM, DEPTH="; YCONT: GOTO 460 400 ' STEEP CHANNEL,YNYC 430 SIGN = -1!: DY = (YCONT - YC) / NN: PRINT : PRINT " CONTROL IS DOWNSTREAM, DEPTH="; YCONT: GOTO 460 440 ' SUPERCRITICAL FLOW, YCONT<=YC 450 SIGN = 1!: NN = 2 * NN: DY = (YN - YCONT) * .998 / NN: PRINT : PRINT " CONTROL IS UPSTREAM, DEPTH="; YCONT 460 SL = 0!: Y = YCONT: E = FNENERGY(Y): FM = FNFPM(Y): PRINT 470 PRINT " DISTANCE DEPTH ENERGY F+M": GOSUB 550 480 ' WATER-SURFACE PROFILE CALCULATION 490 FOR I = 1 TO NN STEP 2: Y2 = YCONT + SIGN * DY * (I + 1) 500 DX = DY * (FNDL(Y) + FNDL(Y2) + 4! * FNDL(YCONT + SIGN * I * DY)) / 3! 510 SL = SL + DX: IF SL > XL THEN 540 520 Y = Y2: E = FNENERGY(Y): FM = FNFPM(Y): IF (I = NN - 1) AND (SL < 0!) THEN SL = XL 530 GOSUB 550: NEXT I: GOTO 160 540 Y = Y2 - SIGN * 2! * DY * (SL - XL) / DX: E = FNENERGY(Y): FM = FNFPM(Y): SL = XL: GOSUB 550: 541 PRINT "Press any key to continue": DO WHILE INKEY$ = "": LOOP 549 GOTO 160 550 PRINT SPC(5); USING " ####.#"; SL; : PRINT USING " ###.###"; Y; E; : PRINT USING " ########."; FM: RETURN 560 DATA "SI",600.,2.5,.8,.012,.0002,25., .907 570 DATA "SI",600.,2.5,.8,.012,.0002,25.,2.